Skip to main content
Minh Nong
💬
0 discussions

[Gcalls Sdk] Kiến trúc

I. Tính năng

  • Bộ Software Dev Kit hỗ trợ cho Omnibox

II. Tổng quan

1. Cài đặt

npm install @devops_gcalls/gcalls-web-sdk

Sau đó import vào project

import Calllog from "@devops_gcalls/gcalls-web-sdk"

Cách public : Xem doc Gcalls SDK

2. Input

Những điều cần chú ý

  • Hạn chế chiếm dụng socket của SIP để truyền data, vì có thể có ảnh hưởng đến chất lượng cuộc gọi, chỉ nên truyền 1 số field cần thiết nếu cần. ( tham khảo hotlineCallout trong code sdk)

  • Sdk có 2 config dành cho event khi kết nối

    • Event dành cho trạng thái cuộc gọi
      • Đối với event cuộc gọi, có 7 trạng thái progress, failed, ended, confirmed, incoming, outgoing, onTrack
      • functions trong eventHandlers dùng để sử dụng các function như callback


const options = {
// Thông tin SIP
configuration: {
sockets: ["wss://example:6969"],
proxy: "example.vn:1234",
sip: "101",
password: "101",
},

// Thông tin event của cuộc gọi

eventHandlers: {
progress: function (e) {
console.log("call is in progress from user");
},
failed: function (e) {
console.log("call failed with cause from user: " + e.cause);
},
ended: (e) => {
console.log("call ended with cause from user: " + e.cause);
},
confirmed: function (e) {
console.log("call confirmed from user");
},
incoming: (e) => {},
outgoing: (e) => {},
onTrack: (e, session) => {
var audio = document.createElement("audio");
audio.srcObject = e.streams[0];
audio.play();
},
functions: {
setNumber,
setStatus,
saveLog,
recordHost,
userInfo,
handleApiHook,
}
},

// Hiện tại chỉ hỗ trợ media
mediaConstraints: { audio: true, video: false },
databaseConfigurations: {
db: "example-db",
username: "example-username",
password: "example-password",
host: "http://example-couchdb-domain",
},
};

calllog.setSocketEventHandlers(eventHandlers);
  • Event dành cho message của SIP (wss)

    • *Lưu ý: Thông tin hiển thị số hotline outbound ở đây để hiện thị cho user đúng hotline trong khi gọi, nếu không thì khi endcall mới thu thập đủ thông tin của cuộc gọi. Nếu không có field này trong bản tin sip, liên hệ Tel4 thêm vào bản tin SIP .(Usecase sieuviet)
let socketEventHandlers = {
onMessage: (e) => {
console.log(e);
},
onClose: (e) => {
console.log(e);
},
onOpen: (e) => {
console.log(e);
}
}
calllog.setSocketEventHandlers(socketEventHandlers);


3. Initiate SDK for Web

const calllog = new Calllog(options);
calllog.register();

4. Thiết kế các modules với mỗi module là 1 gói các tính năng nào đó cho SDK

Input :

  • Có thể thêm tên vào config của sdk, mỗi module có thể có các cấu trúc input khác nhau. Khi thiết kế module người viết module đó có thể tự định nghĩa input và output
 config.modules.moduleName = {
...
...
..
}

Output : Có 2 chỗ

  • Thêm và sử dụng callback ở eventHandler

  • Output của sdk
calllog.modules.moduleName.Function

4. Các định hướng trong tương lai

  • Sdk có thể được đưa vào các trường đại học để sinh viên sử dụng. Đối với đối tượng sinh viên nên thiết kế các module để dễ dàng sử dụng và phù hợp với đối tượng người dùng, từ các module kết nối lại với nhau có thể cho ra 1 sản phẩm hoàn chỉnh